import router from '@/router'
import store from '@/store' // store===this.$store
// 前置守卫：跳转所有路由前都会经过它
/*
获取用户信息
  1:定义接口api
  2:在vuex的user模块导入调用
     state定义userInfo
     mutations修改userInfo
     actions调用api获取用户信息存储
  3:在导航 守卫调用actions
*/
const whitePage = ['/login', '/404']
router.beforeEach(async(to, from, next) => {
  console.log('to', to)
  // to:想去的路由$route
  // from:从哪来的路由$route
  // next:正常放行  next()  跳转到其它路由 next('/path')
  /*
    判断有没有token
        有token
            要去的页面是不是登录页
                  是登录页：去首页
                  非登录页：正常放行
        没有token
            判断要去的页面是不是在白名单页面
                在白名单：放行
                非白名单：回登录页
  */
  if (store.state.user.token) {
    if (to.path.toLowerCase() === '/login') {
      next('/')
    } else {
      if (!store.state.user.userInfo.userId) {
        await store.dispatch('user/getUserInfo')
        // next(to.path)
        // next({ path: to.path, query: { id: 123 }})
        next(to)
      } else {
        next()
      }
    }
  } else {
    if (whitePage.includes(to.path.toLowerCase())) {
      next()
    } else {
      next('/login')
    }
  }
})
// 后置守卫：已到达想去的路由
router.afterEach((to, from) => {
  // 不存在才存储
  // if(){
  console.log('to', to)
  // [{name:'a'}]  'a'
  // every:全部满足条件才返回true
  const bol = store.state.routes.list.every(item => item.name !== to.name)
  if (bol) {
    store.commit('routes/SETLIST', [...store.state.routes.list, to])
  }
  // }
})
